package org.wdcode.core.lucene.need;

import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.index.IndexWriter.MaxFieldLength;
import org.apache.lucene.search.Searcher;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.Version;

/**
 * 指定Lucene需要用到的类 抽象实现
 * @author WD
 * @since JDK6
 * @version 1.0 2010-05-25
 */
public class BaseLuceneNeed implements LuceneNeed {
	// 分词器
	private Analyzer		analyzer;
	// 索引目录
	private Directory		directory;
	// 查询器
	private Searcher		searcher;
	// 索引目录路径
	private String			indexPath;
	// 最大字段长度
	private MaxFieldLength	maxFieldLength;
	// Lucene的版本
	private Version			version;
	// 是否创建
	private boolean			create;
	// 是否只读
	private boolean			readOnly;

	/**
	 * 构造参数
	 */
	public BaseLuceneNeed() {
		init();
	}

	/**
	 * 设置查询器
	 * @param searcher 查询器
	 */
	public final void setSearcher(Searcher searcher) {
		this.searcher = searcher;
	}

	/**
	 * 设置分词器
	 * @param analyzer 分词器
	 */
	public final void setAnalyzer(Analyzer analyzer) {
		this.analyzer = analyzer;
	}

	/**
	 * 设置索引目录
	 * @param directory 索引目录
	 */
	public final void setDirectory(Directory directory) {
		this.directory = directory;
	}

	/**
	 * 设置索引目录路径
	 * @param 索引目录路径
	 */
	public final void setIndexPath(String indexPath) {
		this.indexPath = indexPath;
	}

	/**
	 * 设置最大字段长度
	 * @param maxFieldLength 最大字段长度
	 */
	public final void setMaxFieldLength(MaxFieldLength maxFieldLength) {
		this.maxFieldLength = maxFieldLength;
	}

	/**
	 * 设置Lucene的版本
	 * @param version Lucene的版本
	 */
	public final void setVersion(Version version) {
		this.version = version;
	}

	/**
	 * 获得查询器
	 * @return 查询器
	 */
	public final Searcher getSearcher() {
		return searcher;
	}

	/**
	 * 获得分词器
	 * @return 分词器
	 */
	public final Analyzer getAnalyzer() {
		return analyzer;
	}

	/**
	 * 获得索引目录
	 * @return 索引目录
	 */
	public final Directory getDirectory() {
		return directory;
	}

	/**
	 * 获得索引目录路径
	 * @return 索引目录路径
	 */
	public final String getIndexPath() {
		return indexPath;
	}

	/**
	 * 获得最大字段长度
	 * @return 最大字段长度
	 */
	public final MaxFieldLength getMaxFieldLength() {
		return maxFieldLength;
	}

	/**
	 * 获得Lucene的版本
	 * @return
	 */
	public final Version getVersion() {
		return version;
	}

	/**
	 * 设置是创建还是追加索引
	 * @param create true 创建 false 追加
	 */
	public final void setCreate(boolean create) {
		this.create = create;
	}

	/**
	 * 获得读取索引时是否只读
	 * @param readOnly true 只读 false 不只读
	 */
	public final void setReadOnly(boolean readOnly) {
		this.readOnly = readOnly;
	}

	/**
	 * 获得是创建还是追加索引
	 * @return true 创建 false 追加
	 */
	public final boolean isCreate() {
		return create;
	}

	/**
	 * 获得读取索引时是否只读
	 * @return true 只读 false 不只读
	 */
	public final boolean isReadOnly() {
		return readOnly;
	}

	/**
	 * 初始化方法
	 */
	protected void init() {}
}
